//用户信息相关

const res = require('express/lib/response')
const user = require('../sql/index')
const bcrypt = require('bcryptjs')
const { query } = require('express')

// 用户信息查询
exports.userInfoQuery = (req,res)=> {
  const userinfo = req.body
  const sql = 'select userAccount,username,email,userPic,userType,phoneNumber,balance,registrationTime from user where userAccount=?'

  // console.log(req.body.userAccount);
  user.query(sql,userinfo.userAccount,(err,results)=>{
    //执行 sql 语句失败
    if(err) return res.cc(err)
    //执行 sql 语句成功，但是查询的结果可能为空
    if(results.length !== 1) return res.cc('获取用户信息失败！')

    //用户信息获取成功
    res.send({
        status:0,
        message:'获取用户信息成功',
        data:results[0],
    })
})
}
// 用户信息更新 不包括邮箱和余额
exports.userChangeInfo = (req,res)=> {
  const userinfo = req.body
  const sql = 'update user set ? where userAccount=?'

  user.query(sql,[userinfo,userinfo.userAccount],(err,results)=>{
    if(err) 
      return res.cc(err)
    if(results.affectedRows !==1) 
      return res.cc('更新用户的基本信息失败！')
    res.cc('更新用户信息成功',0)
  })
}
// 用户密码更新
exports.updataPassword = (req,res) => {
  const userinfo = req.body
  const sql = 'select * from user where userAccount=?'

  user.query(sql,userinfo.userAccount,(err,results)=>{
      if(err) 
        return res.cc(err)
      if(results.length !== 1) 
        return res.cc('用户不存在!')

      const compareResult= bcrypt.compareSync(userinfo.oldPassword,results[0].password)
      if(!compareResult) return res.cc('旧密码错误!')

      const sql = 'update user set password=? where userAccount=?'

      const newPassword = bcrypt.hashSync(userinfo.newPassword,10)
      user.query(sql , [newPassword,userinfo.userAccount] , (err,results) => {
          if(err) 
            return res.cc(err)
          if(results.affectedRows !== 1) 
            return res.cc('更新密码失败')
          res.cc('更新密码成功',0)
      })
  })
}
// 用户头像更新
exports.updateUserPic = (req,res) => {
  const userinfo = req.body
  const sql = 'update user set userPic=? where userAccount=?'

  user.query(sql,[ userinfo.userPic , userinfo.userAccount], (err, results) => {
      if (err) 
        return res.cc(err)
      if (results.affectedRows !== 1) 
        return res.cc('更新头像失败！')
      return res.cc('更新头像成功！', 0)
      })
}
// 用户车牌号码信息变更
// 第一车牌号不允许为空值
// 第二车牌号与第三车牌号在 对应车牌下尚有余额的时候不允许为空值
exports.updataPlateNumber = (req,res) =>{
  const userinfo = req.body
  const sql = 'update user set ? where userAccount=?'
  
  if(userinfo.plateNumber1 === '')
    return res.cc("更新用户车牌信息失败！用户必须至少有一个可用车牌")
  if(userinfo.plateNumber2 === '')
    userinfo.plateNumber2 = -1
  if(userinfo.plateNumber3 === '')
    userinfo.plateNumber3 = -1  

  const sql_plateNumber = 'select plateNumber2_balance,plateNumber3_balance from user where userAccount=?'
  user.query(sql_plateNumber,userinfo.userAccount,(err,results)=>{
    if(err) return res.cc(err)
    if(results.length !== 1) 
      return res.cc('更新用户车牌信息失败！服务器错误!')

    if(results[0].plateNumber2_balance != "0" && userinfo.plateNumber2 == -1)
      return res.cc('更新用户车牌信息失败！用户第二车牌号尚有余额不能注销')
    if(results[0].plateNumber3_balance != "0" && userinfo.plateNumber3 == -1)
      return res.cc('更新用户车牌信息失败！用户第三车牌号尚有余额不能注销')
  })

  user.query(sql,[userinfo,userinfo.userAccount],(err,results)=>{
    if(err) 
      return res.cc(err)
    if(results.affectedRows !==1) 
      return res.cc('更新用户车牌信息失败！')
    res.cc('更新用户车牌信息成功',0)
  })
}

exports.updataEmail = (req,res) =>{
  const sql = 'update user set email=? where userAccount=?'
  const userinfo = req.body

  user.query(sql , [userinfo.email,userinfo.userAccount] , (err,results) => {
    if(err) 
      return res.cc(err)
    if(results.affectedRows !== 1) 
      return res.cc('更新邮箱失败')
    res.cc('更新邮箱成功',0)
})
}

exports.userPlate = (req,res) =>{
  const sql = 'select plateNumber1,plateNumber2,plateNumber3 from user where userAccount=?'
  const userinfo = req.body

  user.query(sql , userinfo.userAccount , (err,results) => {
    if(err) 
      return res.cc(err)
    res.send({
      status:0,
      plateNumber1 : results[0].plateNumber1,
      plateNumber2 : results[0].plateNumber2,
      plateNumber3 : results[0].plateNumber3
    })
})
}

exports.userPlateBalance=(req,res)=>{
  const userinfo = req.body
  const sql_plateNumber = 'select plateNumber1,plateNumber2,plateNumber3,plateNumber1_balance,plateNumber2_balance,plateNumber3_balance from user where userAccount=?'
  user.query(sql_plateNumber,userinfo.userAccount,(err,results)=>{
    if(err) return res.cc(err)
    if(results.length !== 1) 
      return res.cc('更新用户车牌信息失败！服务器错误!')
    res.send({
      status : 0,
      plateNumber1_balance :results[0].plateNumber1_balance,
      plateNumber2_balance :results[0].plateNumber2_balance,
      plateNumber3_balance :results[0].plateNumber3_balance,
      plateNumber1 : results[0].plateNumber1,
      plateNumber2 : results[0].plateNumber2,
      plateNumber3 : results[0].plateNumber3,
    })
  })
}